/*
 * Created on 2006-2-27
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.toyi.security;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * @author yangbingxp
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class Module implements Comparable, Serializable {

    private String moduleId;
    private String moduleName;
    private String moduleBh;
    private int moduleJB;
    private int moduleSort;
    private int moduleExe;
    private String moduleUrl;
    private String moduleTarget;
    private String moduleImage;
    private boolean open;
    private ArrayList directSubModule = new ArrayList();

    //    private String fullModuleName;

    /**
     * @return Returns the moduleId.
     */
    public String getModuleId() {
        return moduleId;
    }

    /**
     * @param moduleId The moduleId to set.
     */
    public void setModuleId(String moduleId) {
        this.moduleId = moduleId;
    }

    /**
     * @return Returns the moduleJB.
     */
    public int getModuleJB() {
        return moduleJB;
    }

    /**
     * @param moduleJB The moduleJB to set.
     */
    public void setModuleJB(int moduleJB) {
        this.moduleJB = moduleJB;
    }

    /**
     * @return Returns the moduleName.
     */
    public String getModuleName() {
        return moduleName;
    }

    /**
     * @param moduleName The moduleName to set.
     */
    public void setModuleName(String moduleName) {
        this.moduleName = moduleName;
    }

    /**
     * @return Returns the moduleSort.
     */
    public int getModuleSort() {
        return moduleSort;
    }

    /**
     * @param moduleSort The moduleSort to set.
     */
    public void setModuleSort(int moduleSort) {
        this.moduleSort = moduleSort;
    }

    /**
     * @return Returns the moduleTarget.
     */
    public String getModuleTarget() {
        return moduleTarget;
    }

    /**
     * @param moduleTarget The moduleTarget to set.
     */
    public void setModuleTarget(String moduleTarget) {
        this.moduleTarget = moduleTarget;
    }

    /**
     * @return Returns the moduleUrl.
     */
    public String getModuleUrl() {
        return moduleUrl;
    }

    /**
     * @param moduleUrl The moduleUrl to set.
     */
    public void setModuleUrl(String moduleUrl) {
        this.moduleUrl = moduleUrl;
    }

    /**
     * @return Returns the moduleBh.
     */
    public String getModuleBh() {
        return moduleBh;
    }

    /**
     * @param moduleBh The moduleBh to set.
     */
    public void setModuleBh(String moduleBh) {
        this.moduleBh = moduleBh;
    }

    /**
     * @return Returns the moduleExe.
     */
    public int getModuleExe() {
        return moduleExe;
    }

    /**
     * @param moduleExe The moduleExe to set.
     */
    public void setModuleExe(int moduleExe) {
        this.moduleExe = moduleExe;
    }

    /**
     * @return Returns the open.
     */
    public boolean isOpen() {
        return open;
    }

    /**
     * @param open The open to set.
     */
    public void setOpen(boolean open) {
        this.open = open;
    }


    /**
     * @return Returns the moduleImage.
     */
    public String getModuleImage() {
        return moduleImage;
    }
    /**
     * @param moduleImage The moduleImage to set.
     */
    public void setModuleImage(String moduleImage) {
        this.moduleImage = moduleImage;
    }
    
    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#toString()
     */
    public String toString() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("moduleId===").append(moduleId).append("\n");
        buffer.append("moduleName===").append(moduleName).append("\n");
        buffer.append("moduleJB===").append(moduleJB).append("\n");
        buffer.append("moduleBh===").append(moduleBh).append("\n");
        buffer.append("moduleSort===").append(moduleSort).append("\n");
        buffer.append("moduleExe===").append(moduleExe).append("\n");
        buffer.append("moduleUrl===").append(moduleUrl).append("\n");
        buffer.append("moduleTarget===").append(moduleTarget).append("\n");
        buffer.append("moduleImage===").append(moduleImage).append("\n");
        if (directSubModule.size() > 0)
            buffer.append("------------------sub module list-------------------\n");
        for (int i = 0; i < directSubModule.size(); i++) {
            buffer.append(directSubModule.get(i)).append("\n");
        }
        if (directSubModule.size() > 0)
            buffer.append("------------------end-------------------\n");
        return buffer.toString();
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Comparable#compareTo(java.lang.Object)
     */
    public int compareTo(Object o) {
        if (!(o instanceof Module))
            return -1;
        else {
            if (moduleSort == ((Module) o).getModuleSort())
                return 0;
            else if (moduleSort > ((Module) o).getModuleSort()) {
                return 1;
            } else {
                return -1;
            }
        }
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object obj) {
        if (!(obj instanceof Module))
            return false;
        Module comObj = (Module) obj;
        if (comObj.moduleId.equals(this.moduleId) && comObj.moduleBh.equals(this.moduleBh)) {
            return true;
        }
        return false;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        int result = 17;
        result = 37 * result + this.moduleId.hashCode();
        result = 37 * result + this.moduleBh.hashCode();
        return result;
    }

    /**
     * @return Returns the directSubModule.
     */
    public ArrayList getDirectSubModule() {
        return directSubModule;
    }

    /**
     * @param directSubModule The directSubModule to set.
     */
    public void setDirectSubModule(ArrayList directSubModule) {
        this.directSubModule = directSubModule;
    }

    //        public static void main(String[] args) {
    //            Module m1=new Module();
    //            Module m2=new Module();
    //            m1.setModuleSort(1);
    //            m2.setModuleSort(2);
    //            ArrayList list=new ArrayList();
    //            list.add(m2);
    //            list.add(m1);
    //            Collections.sort(list);
    //            System.out.println(list.get(0));
    //            System.out.println(list.get(1));
    //        }

}